//[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
/**
 *@file		vram_transfer_manager.h
 *@brief	Vram転送マネージャーのタスクを管理する
 *@author	tomoya takahashi
 *@data		2004.11.08
 */
//]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

#ifndef __VRAM_TRANSFER_MANAGER_H__
#define __VRAM_TRANSFER_MANAGER_H__



//----------------------------------------------------------------------------
/**
 *					プロトタイプ宣言
 */
//-----------------------------------------------------------------------------

//----------------------------------------------------------------------------
/**
 *
 *@brief	Vram転送マネージャーの初期化
 *
 *@param	tasks_num：登録可能タスク数
 *@param	heap		使用するヒープ
 *
 *@return	none
 *
 *これ以外はデフォルトの関数を使用してください。
 */
//-----------------------------------------------------------------------------
extern void initVramTransferManagerHeap( u32 tasks_num, int heap );

//----------------------------------------------------------------------------
/**
 *
 *@brief	Vram転送マネージャーの破棄
 *
 *@param	none
 *
 *@return	none
 *
 */
//-----------------------------------------------------------------------------
extern void DellVramTransferManager( void );


//----------------------------------------------------------------------------
/**
 *
 *@brief	Vram転送マネージャータスクを登録
 *
 *@param	type		データ転送先の種類
 *@param	dstAddr		転送先アドレス
 *@param	pSrc		転送元データへのポインタ
 *@param	szByte		転送サイズ
 *
 *@retval	TRUE		成功
 *@retval	FALSE		失敗
 *
 *
 */
//-----------------------------------------------------------------------------
extern BOOL AddVramTransferManager( NNS_GFD_DST_TYPE type, u32 dstAddr, void* pSrc, u32 szByte );

//----------------------------------------------------------------------------
/**
 *
 *@brief	実際に転送する
 *
 *@param	none
 *
 *@return	none
 *
 *
 */
//-----------------------------------------------------------------------------
extern void DoVramTransferManager( void );

//----------------------------------------------------------------------------
/**
 *
 *@brief	今のタスク登録数を取得
 *
 *@param	none
 *
 *@return	int		タスク登録数
 *
 *
 */
//-----------------------------------------------------------------------------
extern int GetVramTransferManagerAddNum( void );

//----------------------------------------------------------------------------
/**
 *
 *@brief	セル転送マネージャの初期化
 *
 *@param	num		最大セル登録数
 *@param	heap	使用ヒープ
 *
 *@return	NNSG2dCellTransferState*	確保したセル転送バッファ
 *
 *
 */
//-----------------------------------------------------------------------------
extern NNSG2dCellTransferState* InitCellTransfer(int num, int heap);

//----------------------------------------------------------------------------
/**
 *
 *@brief	セルのデータをVram転送タスクに設定する
 *
 *@param	none
 *
 *@return	none
 *
 *
 */
//-----------------------------------------------------------------------------
extern void UpdateCellTransfer(void);

//----------------------------------------------------------------------------
/**
 *
 *@brief	セル転送マネージャを破棄
 *
 *@param	data		セル転送データバッファ
 *
 *@return	none
 *
 *
 */
//-----------------------------------------------------------------------------
extern void DeleteCellTransfer(NNSG2dCellTransferState* data);
#endif	// __VRAM_TRANSFER_MANAGER_H__